package java.util;


//按照对象的比较函数进行排序，而并非插入顺序
public interface SortedSet<E> extends Set<E> {
	
    Comparator<? super E> comparator();

    //生成此set的子集，范围是from（包含）到to（不包含）
    SortedSet<E> subSet(E fromElement, E toElement);
    
    //生成此set的子集，范围是开头到to（不包含）
    SortedSet<E> headSet(E toElement);

  //生成此set的子集，范围是from（包含）末尾
    SortedSet<E> tailSet(E fromElement);

    //返回容器中第一个元素
    E first();
    
    //返回容器中最后一个元素
    E last();

    @Override
    default Spliterator<E> spliterator() {
        return new Spliterators.IteratorSpliterator<E>(
                this, Spliterator.DISTINCT | Spliterator.SORTED | Spliterator.ORDERED) {
            @Override
            public Comparator<? super E> getComparator() {
                return SortedSet.this.comparator();
            }
        };
    }
}
